//
// Created by 原帅 on 2021/2/13.
//

#ifndef IVENGINE_IETASKSINVOKER_H
#define IVENGINE_IETASKSINVOKER_H

#include <IETaskInterface.h>
#include <vector>
#include <map>
#include <IERunLoopInterface.h>

using namespace std;

class IETasksInvoker : public IERunLoopInterface {
    class Builder {
    protected:
        IETasksInvoker* invoker;
        IETasksInvoker::Builder *builder;
    public:
        Builder();
        IETasksInvoker::Builder addInvokeTask(IETaskInterface* task);
        IETasksInvoker* build();
    };

protected:
    map<unsigned long , vector<IETaskInterface*>*> tasksMap;

public:
    void runloopTask(void *arg) override;
};


#endif //IVENGINE_IETASKSINVOKER_H
